
#include "test_list.h"

#ifdef TEST_SUPPORT_SAME

#include <den/meta/support_same.h>

#define TEST_CASE_NAME Den
#define TEST_NUMBER(n) support_same##_##n


#define TEST_SUPPORT_SAME_000
#define TEST_SUPPORT_SAME_001
#define TEST_SUPPORT_SAME_002
#define TEST_SUPPORT_SAME_003
#define TEST_SUPPORT_SAME_004
#define TEST_SUPPORT_SAME_005
#define TEST_SUPPORT_SAME_006
#define TEST_SUPPORT_SAME_007
#define TEST_SUPPORT_SAME_008
#define TEST_SUPPORT_SAME_009
#define TEST_SUPPORT_SAME_010
#define TEST_SUPPORT_SAME_011
#define TEST_SUPPORT_SAME_012
#define TEST_SUPPORT_SAME_013
#define TEST_SUPPORT_SAME_014
#define TEST_SUPPORT_SAME_015
#define TEST_SUPPORT_SAME_016
#define TEST_SUPPORT_SAME_017
#define TEST_SUPPORT_SAME_018
#define TEST_SUPPORT_SAME_019
#define TEST_SUPPORT_SAME_020
#define TEST_SUPPORT_SAME_021
#define TEST_SUPPORT_SAME_022
#define TEST_SUPPORT_SAME_023
#define TEST_SUPPORT_SAME_024
#define TEST_SUPPORT_SAME_025
#define TEST_SUPPORT_SAME_026
#define TEST_SUPPORT_SAME_027
#define TEST_SUPPORT_SAME_028
#define TEST_SUPPORT_SAME_029
#define TEST_SUPPORT_SAME_030
#define TEST_SUPPORT_SAME_031
#define TEST_SUPPORT_SAME_032

//------------------------------------------------------------------------------------------------------//

namespace{

    typedef ::std::string Str;

    struct s1ome{};
    struct rabbit{};

    bool operator== (const rabbit& r1, const rabbit& r2);

    struct rabbit1
    {
        template<class T> friend bool
               operator==(const T& left, const rabbit1&);
    };

}//namespace

//------------------------------------------------------------------------------------------------------//

#ifdef TEST_SUPPORT_SAME_000
TEST(TEST_CASE_NAME, TEST_NUMBER(000))
{
    enum { result1 = support_same<int>::value };
        EXPECT_EQ(1, result1 );
    enum { result2 = support_same<int,float>::value };
        EXPECT_EQ(1, result1 );
    enum { result3 = support_same<float>::value };
        EXPECT_EQ(1, result3 );
    enum { result4 = support_same<Str>::value };
        EXPECT_EQ(1, result4 );
}
#endif // TEST_SUPPORT_SAME_000

#ifdef TEST_SUPPORT_SAME_001
TEST(TEST_CASE_NAME, TEST_NUMBER(001))
{
    enum { result1 = support_same<Str,float>::value };
       EXPECT_EQ(0, result1 );
    enum { result2 = support_same<s1ome>::value };
       EXPECT_EQ(0, result2 );
    enum { result3 = support_same<rabbit>::value };
       EXPECT_EQ(1, result3 );
    enum { result4 = support_same<rabbit1>::value };
       EXPECT_EQ(1, result4 );
}
#endif // TEST_SUPPORT_SAME_001

#ifdef TEST_SUPPORT_SAME_002
#endif // TEST_SUPPORT_SAME_002

#ifdef TEST_SUPPORT_SAME_003
#endif // TEST_SUPPORT_SAME_003

#ifdef TEST_SUPPORT_SAME_004
#endif // TEST_SUPPORT_SAME_004

#ifdef TEST_SUPPORT_SAME_005
#endif // TEST_SUPPORT_SAME_005

#ifdef TEST_SUPPORT_SAME_006
#endif // TEST_SUPPORT_SAME_006

#ifdef TEST_SUPPORT_SAME_007
#endif // TEST_SUPPORT_SAME_007

#ifdef TEST_SUPPORT_SAME_008
#endif // TEST_SUPPORT_SAME_008

#ifdef TEST_SUPPORT_SAME_009
#endif // TEST_SUPPORT_SAME_009

#ifdef TEST_SUPPORT_SAME_010
#endif // TEST_SUPPORT_SAME_010

#ifdef TEST_SUPPORT_SAME_011
#endif // TEST_SUPPORT_SAME_011

#ifdef TEST_SUPPORT_SAME_012
#endif // TEST_SUPPORT_SAME_012

#ifdef TEST_SUPPORT_SAME_013
#endif // TEST_SUPPORT_SAME_013

#ifdef TEST_SUPPORT_SAME_014
#endif // TEST_SUPPORT_SAME_014

#ifdef TEST_SUPPORT_SAME_015
#endif // TEST_SUPPORT_SAME_015

#ifdef TEST_SUPPORT_SAME_016
#endif // TEST_SUPPORT_SAME_016

#ifdef TEST_SUPPORT_SAME_017
#endif // TEST_SUPPORT_SAME_017

#ifdef TEST_SUPPORT_SAME_018
#endif // TEST_SUPPORT_SAME_018

#ifdef TEST_SUPPORT_SAME_019
#endif // TEST_SUPPORT_SAME_019

#ifdef TEST_SUPPORT_SAME_020
#endif // TEST_SUPPORT_SAME_020

#ifdef TEST_SUPPORT_SAME_021
#endif // TEST_SUPPORT_SAME_021

#ifdef TEST_SUPPORT_SAME_022
#endif // TEST_SUPPORT_SAME_022

#ifdef TEST_SUPPORT_SAME_023
#endif // TEST_SUPPORT_SAME_023

#ifdef TEST_SUPPORT_SAME_024
#endif // TEST_SUPPORT_SAME_024

#ifdef TEST_SUPPORT_SAME_025
#endif // TEST_SUPPORT_SAME_025

#ifdef TEST_SUPPORT_SAME_026
#endif // TEST_SUPPORT_SAME_026

#ifdef TEST_SUPPORT_SAME_027
#endif // TEST_SUPPORT_SAME_027

#ifdef TEST_SUPPORT_SAME_028
#endif // TEST_SUPPORT_SAME_028

#ifdef TEST_SUPPORT_SAME_029
#endif // TEST_SUPPORT_SAME_029

#ifdef TEST_SUPPORT_SAME_030
#endif // TEST_SUPPORT_SAME_030

#ifdef TEST_SUPPORT_SAME_031
#endif // TEST_SUPPORT_SAME_031

#ifdef TEST_SUPPORT_SAME_032
#endif // TEST_SUPPORT_SAME_032





#endif //TEST_SUPPORT_SAME



